يکي از مسائل مهم در امر در امر مديريت سايت اين است که بدانيد کاربران چه کارهايي در سايت انجام ميدهند و يا از چه صقحاتي بازديد مي کنند. منظورم تمام بازديدکنندگان نيست. بلکه اموري که در سايت شما اتفاق ميافتد و ممکن است نشانه هک شدن سايت يا اعمال خلاف ضابطه از سوي يک کاربر باشد. در دروپال دستور watchdog مسئول اين کار امنيتي است. هر ماژولي ميتواند با اين دستور يک رويداد را در جدولي با نام watchdog در ديتابيس دروپال ايجاد کند. و مدير سايت دروپالي ميتواند با فعالسازي ماژول dblog اين رويدادها را در صفحه "وروديهاي اخير ثبت وقايع"(Recent log entries) در زيرمنوي گزارشات(reports) مشاهده کند.
ساختار کلي: شکل کلي اين دستور عبارت است از:
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL);
در ساختار اين دستور پارامترهاي زير قابل دريافت است(در بين پرانتز ميتوان 5 پارامتر به اين فانکشن ارسال نمود):
پارامتر | توضيح |
---|---|
$type |
دسته پيام را مشخص مي کند. هر عبارتي را ميتوان به اين پارامتر ارسال کرد، اما بهتر است و معمولاً نام ماژولي که اين دستور را فراخواني کرده است را به اين پارامتر ارسال کنيم تا بعداً بتوان فهميد اين پيام از کدام ماژول ثبت شده است. |
$message |
پيامي است که بايد در ديتابيس ثبت شود. ميتوان از دستور ()t براي ثبت پيام با قابليت ترجمه استفاده نمود که اگر پيامي در دروپال به زباني ترجمه شود، پيام ترجمه شده در ديتابيس واقع شود. |
$variables |
يک آرايه بايد باشد از مقدارهايي متغيري که در پارامتر message ارسال شده است. اگر پيام بدون متغير است و يا قابل ترجمه نيست مي توان اين پارامتر را خالي يا NULL ارسال کرد. |
$severity |
ميزان اهميت اين پيام را از طريق ارسال يک عدد يا عبارت معادل در اين پارامتر ميتوانيد تعيين کنيد. يک سري عبارتهاي معادل در فايل bootstrap.inc تعريف شدهاند. البته براساس اولويتهايي که در سايت http://www.faqs.org/rfcs/rfc3164.html تعريف شده است. اين عبارتهاي معادل عبارتند از:( در هر خط ابتدا عبارت معادل آورده شده و سپس عدد معادل آن عبارت و بعد نام انگليسي وسپس توضيح فارسي)
بهتر است شما هم در هنگام استفاده از دستور watchdog از همين عبارتها استفاده کنيد تا با ديگر ماژولها هماهنگ بوده و به برنامه نويسان ديگر اجازه بدهيد که کد شما را بفهمند. |
$link | يک لينک که مرتبط با پيام است و مدير سايت از طريق آن لينک ميتواند اطلاعات بيشتري از خطا براي رفع آن بيابد. |
نحوه عملکرد دستور:
جايگاه اين دستور:
جايگاه اين دستور فايل includes\bootstrap.inc ميباشد و ساختار اين دستور در دروپال 6 به شکل زير است:
function watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL) {
global $user, $base_root;
// Prepare the fields to be logged
$log_message = array(
'type' => $type,
'message' => $message,
'variables' => $variables,
'severity' => $severity,
'link' => $link,
'user' => $user,
'request_uri' => $base_root . request_uri(),
'referer' => referer_uri(),
'ip' => ip_address(),
'timestamp' => time(),
);
// Call the logging hooks to log/process the message
foreach (module_implements('watchdog') as $module) {
module_invoke($module, 'watchdog', $log_message);
}
}
فعالسازي:
براي فعالسازي اين دستور و ثبت وقايع در ديتابيس بايد ماژول dblog را که جزء ماژولهاي هسته دروپال 6 هست فعال نماييد.